import { getCityInfo } from '../api/city'

export const setLocalCity = city => {
  window.localStorage.setItem('current_city', JSON.stringify(city))
}

const getLocalCity = () => {
  return window.localStorage.getItem('current_city')
}

export const getCurrentCity = () => {
  // 这里面无论怎么处理，最终都要返回一个Promise，并且最终Promise resolve出去的就是一个城市对象
  //1、先从本地去取，看能否去到，如果取到了，则通过Promise.resolve 直接返回给调用者
  //2、如果本地没有，调用百度地图的定位API，获取城市信息（只有城市名，没有value），再进一步发请求请求自己的接口，去获取数据，
  // 获取完数据之后，需要做两件事情，第一，把它保存到本地，方便下次获取，第二，别忘记把返回的数据通过resolve返回给调用者

  const localCity = getLocalCity()
  if (localCity) {
    // 本地存在值
    // return new Promise((resolve, reject) => {
    //   resolve(JSON.parse(localCity))
    // })

    return Promise.resolve(JSON.parse(localCity))
  } else {
    // 本地没有值
    return new Promise((resolve, reject) => {
      // 调用百度地图定位的api，获取到城市名
      const myCity = new window.BMap.LocalCity()
      myCity.get(async result => {
        // 根据城市名字，调用我们自己后台的接口，返回城市数据(包含的有value)
        // http://huangjiangjun.top:8088/area/info?name=%E5%8C%97%E4%BA%AC
        const res = await getCityInfo(result.name)

        // 把它保存到本地 & 通过resolve返回给调用者
        setLocalCity(res.data.body)

        resolve(res.data.body)
      })
    })
  }
}
